package org.batatasframework.support.database.sql.where;

import java.util.List;

import org.batatasframework.support.database.LogicSymbol;
import org.batatasframework.support.database.sql.QueryParameter;
import org.batatasframework.support.database.sql.TableInstance;


/**
 * <pre>
 * 只添加一个查询条件，这个查询条件的规则是自定义的，需要符合sql的语句和相应的约束；否则查询数据库时会直接抛出异常。
 * 
 * 可以由子类扩展出可定义的查询条件。
 * 
 * 如： "x.c_deleted=0" 等语句
 * 如上面的例子，使用这个方法，如果需要指定数据库的别名的，则需要自己在语句里指定；也可以同时有多个查询条件的，
 * 所以无法自动添加数据库的别名，如："x.c_deleted=0 and y.c_deleted=0"等
 * 一般不用到这个类
 * </pre>
 * @author jackson
 *
 */
public class SimpleQueryFragment implements QueryFragment{
	
	/**
	 * 查询语句
	 */
	protected final String query;
	
	protected final TableInstance tableSource;
	
	public SimpleQueryFragment(TableInstance tableSource, String query){
		this.tableSource = tableSource;
		this.query = query;
	}

	@Override
	public void parse(LogicSymbol logic, StringBuilder sql, List<QueryParameter> paramenters) {
		sql.append(logic.getValue()).append(tableSource.getAlias()).append('.').append(query);
	}
}
